A typical computer system is comprised of a central processing unit, a memory and a plurality of input/output units which might be keyboards, displays or the like. Under control of a program stored in the memory, the central processing unit performs computations on data which is either stored in the memory or received from the input/output devices, such as keyboards or magnetic tape recorders. The program for the operation of the computer is also typically entered via an I/O device. The results of a computation or the contents of the memory may be displayed on output devices such as printers or video display terminals.
Normally, input/output devices such as printers or keyboards are interfaced to the central processing unit by use of an input/output bus. This "bus" consists of a set of leads which are connected in parallel to all of the input/output devices. The set of leads is divided into address leads and data leads. The address leads carry a code generated by the central processing unit which selects a particular input/output or "peripheral" unit. Each peripheral device has decoding circuitry in it which is sensitive to a particular combination of digital information appearing on the address lead. When the particular combination appears the device becomes active and exchanges information with the central processing unit.
A problem arises in this arrangement when "foreign I/O devices" are attached to the input/output bus. A foreign I/O device may be an input/output device incorrectly attached to the system or an equivalent of a foreign I/O device may result if the input/output bus is simply left unterminated. In either case, improper signals or noise may be introduced into the computer through the input/output bus. If the computer is not able to recognize these signals as improper or as noise, it may act upon them as if they were proper data with the result that the actual data in the storage may be corrupted by noise signals and other totally random information.
In large computer systems, the foreign I/O device problem is not particularly significant since the operating software in such a system is tailored to the actual physical configuration. Each input/output device has a software "driver" program associated with it which receives and interpretes signals on the input/output bus from that device. If a particular software driver is not present, the computer simply ignores signals from devices normally associated with the driver even though such signals may be present. Software drivers may be added or removed from the software operating system as desired in a process in which the operating program is tailored to the physical system configuration via a procedure known as system "set up", "system generation" or "sysgen".
In a small computer, however, the foreign I/O device problem is more severe because, in most small computers, the computer's operating program is permanently fixed in a read-only memory in the device at the time of manufacture and therefore software drivers for all possible peripheral devices must be included. It is therefore possible for noise or other improper signals to enter the system by means of the input/output bus when improper devices are attached or the bus is improperly terminated.
Prior art attempts to solve the foreign I/O device problem have included specialized plugs which are used to terminate the input/output bus to avoid noise problems when no peripheral units are attached and complicated synchronization schemes to ensure that signals are received from only desired input/output units.
It is an object of the present invention to provide a simple method for protecting a computer against foreign I/O devices.
It is a further object of the present invention to automatically enable and disable input/output devices under internal software control.